#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
void add(int &a,int b){
    a=(a+b>=mod?a+b-mod:a+b);
}
int qpow(int a,int b){
    int r=1;
    while(b){
        if(b&1)r=1ll*r*a%mod;
        a=1ll*a*a%mod;
        b>>=1;
    }
    return r;
}
const int N=20000001;
int n,m;
int ifc[N],idm[N];
bool f[N];
int p[N],k;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    freopen("drama.in","r",stdin);
    freopen("drama.out","w",stdout);
    cin>>n>>m;
    int fac=1;
    for(int i=1;i<=n;i++)fac=1ll*fac*i%mod;
    ifc[n]=qpow(fac,mod-2);
    for(int i=n;i>=1;i--)ifc[i-1]=1ll*ifc[i]*i%mod;
    idm[1]=1;
    for(int i=2;i<=n;i++){
        if(!f[i])p[++k]=i,idm[i]=qpow(i,m);
        for(int j=1;i*p[j]<=n;j++){
            f[i*p[j]]=1;
            idm[i*p[j]]=1ll*idm[i]*idm[p[j]]%mod;
            if(i%p[j]==0)break;
        }
    }
    int ans=0,sum=0;
    for(int i=n;i>=1;i--){
        if((n-i)&1)add(sum,mod-ifc[n-i]);
        else add(sum,ifc[n-i]);
        ans=(ans+1ll*ifc[i]*idm[i]%mod*sum)%mod;
    }
    cout<<ans;
    return 0;
}
